<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/ipc.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/ipc.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X1VBUElfTElOVVhfSVBDX0hfMA__"><span class="b">_UAPI_LINUX_IPC_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X1VBUElfTElOVVhfSVBDX0hfMA__"><span class="b">_UAPI_LINUX_IPC_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX1BSSVZBVEVfMA__"><span class="b">IPC_PRIVATE</span></a> <span class="f">(</span><span class="f">(</span><span class="b">__kernel_key_t</span><span class="f">)</span> <span class="c">0</span><span class="f">)</span>  
<a name="7" /><span class="True">       7:</span> 
<a name="8" /><span class="True">       8:</span> <span class="k">/* Obsolete, used only for backwards compatibility and libc5 compiles */</span>
<a name="9" /><span class="True">       9:</span> <span class="m">struct</span> <span class="b">ipc_perm</span>
<a name="10" /><span class="True">      10:</span> <span class="f">{</span>
<a name="11" /><span class="True">      11:</span>     <span class="b">__kernel_key_t</span>    <span class="b">key</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span>     <span class="b">__kernel_uid_t</span>    <span class="b">uid</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span>     <span class="b">__kernel_gid_t</span>    <span class="b">gid</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span>     <span class="b">__kernel_uid_t</span>    <span class="b">cuid</span><span class="f">;</span>
<a name="15" /><span class="True">      15:</span>     <span class="b">__kernel_gid_t</span>    <span class="b">cgid</span><span class="f">;</span>
<a name="16" /><span class="True">      16:</span>     <span class="b">__kernel_mode_t</span>    <span class="b">mode</span><span class="f">;</span> 
<a name="17" /><span class="True">      17:</span>     <span class="m">unsigned</span> <span class="m">short</span>    <span class="b">seq</span><span class="f">;</span>
<a name="18" /><span class="True">      18:</span> <span class="f">}</span><span class="f">;</span>
<a name="19" /><span class="True">      19:</span> 
<a name="20" /><span class="True">      20:</span> <span class="k">/* Include the definition of ipc64_perm */</span>
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">ipcbuf</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="22" /><span class="True">      22:</span> 
<a name="23" /><span class="True">      23:</span> <span class="k">/* resource get request flags */</span>
<a name="24" /><span class="True">      24:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX0NSRUFUXzA_"><span class="b">IPC_CREAT</span></a>  <span class="c">00001000</span>   <span class="k">/* create if key is nonexistent */</span>
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX0VYQ0xfMA__"><span class="b">IPC_EXCL</span></a>   <span class="c">00002000</span>   <span class="k">/* fail if key exists */</span>
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX05PV0FJVF8w"><span class="b">IPC_NOWAIT</span></a> <span class="c">00004000</span>   <span class="k">/* return error on wait */</span>
<a name="27" /><span class="True">      27:</span> 
<a name="28" /><span class="True">      28:</span> <span class="k">/* these fields are used by the DIPC package so the kernel as standard</span>
<a name="29" /><span class="True">      29:</span> <span class="k">   should avoid using them if possible */</span>
<a name="30" /><span class="True">      30:</span>    
<a name="31" /><span class="True">      31:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX0RJUENfMA__"><span class="b">IPC_DIPC</span></a> <span class="c">00010000</span>  <span class="k">/* make it distributed */</span>
<a name="32" /><span class="True">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX09XTl8w"><span class="b">IPC_OWN</span></a>  <span class="c">00020000</span>  <span class="k">/* this machine is the DIPC owner */</span>
<a name="33" /><span class="True">      33:</span> 
<a name="34" /><span class="True">      34:</span> <span class="k">/* </span>
<a name="35" /><span class="True">      35:</span> <span class="k"> * Control commands used with semctl, msgctl and shmctl </span>
<a name="36" /><span class="True">      36:</span> <span class="k"> * see also specific commands in sem.h, msg.h and shm.h</span>
<a name="37" /><span class="True">      37:</span> <span class="k"> */</span>
<a name="38" /><span class="True">      38:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX1JNSURfMA__"><span class="b">IPC_RMID</span></a> <span class="c">0</span>     <span class="k">/* remove resource */</span>
<a name="39" /><span class="True">      39:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX1NFVF8w"><span class="b">IPC_SET</span></a>  <span class="c">1</span>     <span class="k">/* set ipc_perm options */</span>
<a name="40" /><span class="True">      40:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX1NUQVRfMA__"><span class="b">IPC_STAT</span></a> <span class="c">2</span>     <span class="k">/* get ipc_perm options */</span>
<a name="41" /><span class="True">      41:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX0lORk9fMA__"><span class="b">IPC_INFO</span></a> <span class="c">3</span>     <span class="k">/* see ipcs */</span>
<a name="42" /><span class="True">      42:</span> 
<a name="43" /><span class="True">      43:</span> <span class="k">/*</span>
<a name="44" /><span class="True">      44:</span> <span class="k"> * Version flags for semctl, msgctl, and shmctl commands</span>
<a name="45" /><span class="True">      45:</span> <span class="k"> * These are passed as bitflags or-ed with the actual command</span>
<a name="46" /><span class="True">      46:</span> <span class="k"> */</span>
<a name="47" /><span class="True">      47:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDX09MRF8w"><span class="b">IPC_OLD</span></a> <span class="c">0</span>    <span class="k">/* Old version (no 32-bit UID support on many</span>
<a name="48" /><span class="True">      48:</span> <span class="k">               architectures) */</span>
<a name="49" /><span class="True">      49:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDXzY0XzA_"><span class="b">IPC_64</span></a>  <span class="c">0x0100</span>  <span class="k">/* New version (support 32-bit UIDs, bigger</span>
<a name="50" /><span class="True">      50:</span> <span class="k">               message sizes, etc. */</span>
<a name="51" /><span class="True">      51:</span> 
<a name="52" /><span class="True">      52:</span> <span class="k">/*</span>
<a name="53" /><span class="True">      53:</span> <span class="k"> * These are used to wrap system calls.</span>
<a name="54" /><span class="True">      54:</span> <span class="k"> *</span>
<a name="55" /><span class="True">      55:</span> <span class="k"> * See architecture code for ugly details..</span>
<a name="56" /><span class="True">      56:</span> <span class="k"> */</span>
<a name="57" /><span class="True">      57:</span> <span class="m">struct</span> <span class="b">ipc_kludge</span> <span class="f">{</span>
<a name="58" /><span class="True">      58:</span>     <span class="m">struct</span> <span class="b">msgbuf</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">msgp</span><span class="f">;</span>
<a name="59" /><span class="True">      59:</span>     <span class="m">long</span> <span class="b">msgtyp</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">}</span><span class="f">;</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="True">      62:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNT1BfMA__"><span class="b">SEMOP</span></a>         <span class="c">1</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNR0VUXzA_"><span class="b">SEMGET</span></a>         <span class="c">2</span>
<a name="64" /><span class="True">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNQ1RMXzA_"><span class="b">SEMCTL</span></a>         <span class="c">3</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNVElNRURPUF8w"><span class="b">SEMTIMEDOP</span></a>     <span class="c">4</span>
<a name="66" /><span class="True">      66:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TVNHU05EXzA_"><span class="b">MSGSND</span></a>        <span class="c">11</span>
<a name="67" /><span class="True">      67:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TVNHUkNWXzA_"><span class="b">MSGRCV</span></a>        <span class="c">12</span>
<a name="68" /><span class="True">      68:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TVNHR0VUXzA_"><span class="b">MSGGET</span></a>        <span class="c">13</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TVNHQ1RMXzA_"><span class="b">MSGCTL</span></a>        <span class="c">14</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hNQVRfMA__"><span class="b">SHMAT</span></a>        <span class="c">21</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hNRFRfMA__"><span class="b">SHMDT</span></a>        <span class="c">22</span>
<a name="72" /><span class="True">      72:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hNR0VUXzA_"><span class="b">SHMGET</span></a>        <span class="c">23</span>
<a name="73" /><span class="True">      73:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hNQ1RMXzA_"><span class="b">SHMCTL</span></a>        <span class="c">24</span>
<a name="74" /><span class="True">      74:</span> 
<a name="75" /><span class="True">      75:</span> <span class="k">/* Used by the DIPC package, try and avoid reusing it */</span>
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RElQQ18w"><span class="b">DIPC</span></a>            <span class="c">25</span>
<a name="77" /><span class="True">      77:</span> 
<a name="78" /><span class="True">      78:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVBDQ0FMTF8w"><span class="b">IPCCALL</span></a><span class="f">(</span><span class="b">version</span><span class="f">,</span><span class="b">op</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">version</span><span class="f">)</span><span class="f">&lt;&lt;</span><span class="c">16</span> <span class="f">|</span> <span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">)</span>
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="True">      80:</span> 
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _UAPI_LINUX_IPC_H */</span>
<a name="82" /><span class="True">      82:</span> </pre>
  </body>
</html>
